from django.db import models
from django.contrib.auth.models import User
class BlogType(models.Model):# 博客分类
    type_name = models.CharField(max_length=15)
    def __str__(self):
        return self.type_name
    '''
        让模型实例在 print() 或管理后台中以 type_name 的值显示，而不是默认的对象表示 <BlogType: BlogType object (1)>。
    '''
    class Meta:
        db_table = 'BlogType_blogdemo3'

class Blog(models.Model):# 博客文章
    title = models.CharField(max_length=50)
    blog_type = models.ForeignKey(BlogType, on_delete=models.DO_NOTHING)
    # 关联到 BlogType 模型，表示该博客的分类。ForeignKey（外键）用于建立一对多的关系（一个 BlogType 可以对应多个 Blog）。
    # on_delete=models.DO_NOTHING：如果 BlogType 被删除，不会影响 Blog，即 Blog 仍然保留原来的 blog_type 外键值。
    content = models.TextField()
    author = models.ForeignKey(User, on_delete=models.DO_NOTHING)
    # 关联 Django 自带的 User 模型，表示博客的作者。
    # on_delete=models.DO_NOTHING：如果用户被删除，博客仍然保留外键字段。
    created_time = models.DateTimeField(auto_now_add=True)
    # 文章创建时间，auto_now_add=True 表示 Django 在创建博客时自动填充当前时间。
    last_updated_time = models.DateTimeField(auto_now=True)
    # 文章最后修改时间，auto_now=True 表示每次修改博客时自动更新该时间。
    class Meta: # 设置表名
        db_table = 'Blog_blogdemo3'
    def __str__(self):
        return "<Blog: %s>" % self.title
    # 让 Blog 实例在 print() 或 Django 管理后台中以 "<Blog: 文章标题>" 的格式显示，而不是默认的 <Blog: Blog object (1)>。